import java.math.BigDecimal;

/**
 * @author Macrydy
 * @date 2022/5/6
 * <p>
 * Bigdecimal
 * 1.四则运算
 * 2.除法除不尽处理办法
 * <p>
 * 注意：想要获取精确计算值，参数必须为Sting类型
 */
public class BigdecimalTest {

    public static void main(String[] args) {

        BigDecimal d1 = new BigDecimal("10");
        BigDecimal d2 = new BigDecimal("3");

        //加减乘
        BigDecimal add = d1.add(d2);
        BigDecimal subtract = d1.subtract(d2);
        BigDecimal multiply = d1.multiply(d2);

        System.out.println("加法：" + add);
        System.out.println("减法：" + subtract);
        System.out.println("乘法：" + multiply);

        //除法
        //参数一：表示参与运算的另一个对象
        //参数二：表示精确到小数点后几位
        //参数三：舍入模式
        //进一法 BigDecimal.ROUND_UP
        //去尾法 BigDecimal.ROUND_FLOOR
        //四舍五入 BigDecimal.ROUND_HALF_UP
        //进一法
        BigDecimal divide = d1.divide(d2, 3, BigDecimal.ROUND_UP);
        //去尾法
        BigDecimal divide2 = d1.divide(d2, 3, BigDecimal.ROUND_FLOOR);
        //四舍五入
        BigDecimal divide3 = d1.divide(d2, 3, BigDecimal.ROUND_HALF_UP);

        System.out.println("进一法:" + divide + "\n" + "去尾法:" + divide2 + "\n" + "四舍五入:" + divide3 + "\n");

        //double类型运算需要先转换成String，再用Bigdecimal进行运算
        Double dd1 = new Double(3.2);
        Double dd2 = new Double(5.36);
        System.out.println(dd1+","+dd2);

        BigDecimal multiply1 = new BigDecimal(dd1.toString()).multiply(new BigDecimal(dd2.toString()));
        System.out.println(multiply1);
    }

}
